#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
#include<string.h>
#include<error.h>


#define filename "log.txt"


//-------------Part IV 文件描述符位置1与2的区别------------
int main()
{
    //./mytest 1>normal.log  2>err.log
    //./mytest 1>all.log 2>&1

    fprintf(stdout,"hello normal message\n");
    fprintf(stdout,"hello normal message\n");
    fprintf(stdout,"hello normal message\n");

    fprintf(stderr,"hello error message\n");
    fprintf(stderr,"hello error message\n");
    fprintf(stderr,"hello error message\n");
    return 0;
}





//int main()
//{
//   // close(1);
//    //int fd = open(filename,O_CREAT|O_WRONLY|O_TRUNC,0666);
//    int fd = open(filename,O_CREAT|O_WRONLY|O_APPEND,0666);//追加重定向
//    //int fd = open(filename,O_RDONLY);//只读
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    
//    //-----------PartIII-----------
//    dup2(fd,1);
//    close(fd);
//    printf("hello printf: fx\n");
//    fprintf(stdout,"hello fprintf: fx\n");
//
//
//    //-----------只读
//    //重定向
//    //dup2(fd,0);
//    //char inbuffer[1024] ;
//    //ssize_t s = read(0,inbuffer,sizeof(inbuffer)-1);
//
//    //if(s>0)
//    //{
//    //    inbuffer[s]='\0';
//    //    printf("echo# %s",inbuffer);
//    //}
//
//    //----------重定向
//   // dup2(fd,1);
//   // close(fd);
//   // printf("fd: %d\n",fd);
//   // const char *msg = "fx is a cat\n";
//   // int cnt = 5;
//   // while(cnt)
//   // {
//   //     write(1,msg,strlen(msg));
//   //     //printf(msg);
//   //     cnt--;
//   // }
//   // printf("hhhh\n");//这是重定向，本该输出到显示器的都被输出到文件；而若果采用close再open那种printf不会输出
//   // close(fd);
//    return 0;
//}
